1. Field of the Invention
The present invention relates to a system for scaling computerized graphic images and for displaying the scaled images thus obtained. More particularly, the invention concerns a system in which a scaled image is sequentially built by scaling overlapping, but different, portions of the original bitmap image and by combining the scaled different portions to obtain the scaled image.
2. Description of the Related Art
Recently, the user interface in a computer operating system has shifted from a text-based user interface to a graphical-based user interface. For example, a graphical user interface operating system such as a MicroSoft.RTM. Windows operating system displays "windows" of information; windows containing information of primary importance are ordinarily displayed overlapping over other windows of lesser importance. Options are presented to a user in the form of graphical "buttons" or icons, which a user may select by manipulation of a mouse or other pointing device. Upon selection of a desired icon, a corresponding computer function is performed which may entail replacing current windows with new overlapping windows.
Creation of graphical images, such as the overlapping windows or the icons in a graphical user interface, often involves scaling a full-size bitmap image down to a reduced size. For example, a computer operator may decide that one area of his display screen of lesser importance than other areas, and he may desire to have that one area reduced in size and moved to a corner of the display screen so that the operator may refer to that one area without needlessly cluttering the display screen. Or, when processing windows, the graphical user interface operating system may be used to scale one window so that a new window may be displayed side-by-side with the old window. Or, when creating an icon, a computer programmer may prefer to digitally scan a full-size image and scale the image down to a size suitable for a graphical "button".
FIGS. 10 and 11 are views for explaining some of these situations in which it is desired to scale a digital image. Thus, in FIG. 10, a graphical user interface operating system first displays a window 101a on display screen 102a. In response to a command to display a new window, the operating system scales window 101a and repositions it to the lower right hand corner of the screen, as shown at 101b and 102b, respectively. The operating system then displays new window 103. Scaling thus permits the new window 103 to be displayed side-by-side with old window 101b.
FIG. 11 is a view of a computer menu from a graphical user interface that retrieves images of documents from an optical disk on which several thousand of such documents are stored. As shown in FIG. 11, area 111 of display screen 110 includes 25 icon buttons, such as button 111a, arranged in a 5.times.5 array. Each of the icons is formed by retrieving an original image representative of the subject matter of the documents, and by scaling the original image to the size of the icon. By selecting various combinations of the icons, documents may be retrieved from the optical disk based on desired subject matter.
When programming a computer to perform functions like those described above, a computer programmer ordinarily relies on a software developers kit ("SDK"). The SDK includes software tools, such as pre-programmed library routines, which ease the programming burden by allowing the programmer to program the computer by simply choosing the tools needed to perform the desired functions. Thus, for example, there are tools which allow a programmer to write programs that display data in a window, to more windows around a display screen, to display a menu bar of icons, etc. There are also tools which scale a bit map image to any desired size. In the MicroSoft.RTM. Windows SDK, such a scaling routine is the "StretchBit()" routine.
Using scaling routines included in SDK's provides convenient tools for scaling images, since the programmer need not write his own scaling routine. There are, however, drawbacks to their use.
More particularly, such standard scaling routines are ordinarily optimized for speed rather than for preservation of scaled image detail. Thus, to reduce the size of an original, a typical scaling routine will simply discard unneeded pixels of the bitmap image. FIG. 12 illustrates this operation in a situation where it is desired to reduce an original image 120 to half-size. As shown in FIG. 12, the scaling routine analyzes the pixels 124 of the image to determine which pixels are needed and which pixels are unneeded. In a situation where the size of the original is to be reduced by exactly one-half, then only one pixel 125 in a 2.times.2 pixel area is needed; the remaining three pixels are unneeded. The unneeded pixels are removed resulting in a scaled image 127. However, since unneeded pixels have simply been removed, as shown in magnified inset 126, it is seen that the scaled image, though of the correct size, retains little detail of the original image.
Accordingly, except in uncritical applications where the resulting poor image detail is acceptable, it has not heretofore been possible to use standard scaling routines provided with graphical user interface SDK's to scale bitmap images. In situations where poor image detail is unacceptable, other, more sophisticated, scaling routines are needed.